package matrix;

/**
 * Реализация Абстрактной {@linkplain matrix.IRange Области} через двумерный массив
 */
public class CMatrixAsArray extends CAbstractRange {
	private ICell[][] m_aMatrix;

	public CMatrixAsArray(int aRows, int aColumns) {
		super(aRows, aColumns);
		m_aMatrix = new ICell[aRows][aColumns];
	}

	public CMatrixAsArray(IRange aParent, int aRow, int aColumn, int aRows, int aColumns) {
		super(aParent, aRow, aColumn, aRows, aColumns);
		m_aMatrix=null;
	}

	@Override
	public boolean add(ICell aCell) {
		if (aCell == null) {return false;}
		m_aMatrix[aCell.row()-1][aCell.column()-1] = aCell;
		return true;
	}

	@Override
	public IRange range(int aRow, int aColumn, int aRows, int aColumns) {
		return new CMatrixAsArray(this, aRow, aColumn, aRows, aColumns);
	}

}
